<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>作业5</title>
    <script>
        /*
        5. 如果整数A 的全部约数（包括1，不包括A 本身）之和等于B，且整数B 的全部约数
        （包括1，不包括B 本身）之和等于A，则称整数A和B是一对亲密数。
        求2000 以内的全部亲密数。
        */

        /*
        函数功能：求某个数字所有约数之和
        输入：一个整数
        输出：输入数字的所有约数之和
        */
        function getDivisors(num){
            var sum = 0;

            for(var i=1; i<num; i++){
                if(num%i == 0){
                    sum += i;
                }
            }
            
            return sum;
        }

        /*
        函数功能：判断两个数是否是亲密书
        函数输入：两个数
        函数输出：如果两个数是亲密数，返回true；否则返回false。
        */
        function isQinMiNum(numA, numB){
            if(getDivisors(numA) == numB && getDivisors(numB) == numA){
                return true;
            }else {
                return false;
            }
        }

        /*
        函数功能：获取某个范围内数字的所有亲密数
        输入：一个数字范围，minNum < maxNum
        输出：该范围所有的亲密数的一个数组，
             ps: 一对亲密数是一个对象，有这些对象组成的数组
        */
        function getQinmiNums(minNum, maxNum){
            var arrQinmiNums = [];
            for(var i=minNum; i<=maxNum; i++){
                for(var j=i+1; j<=maxNum; j++){
                    if(isQinMiNum(i, j)){
                        var objQinMiNum = {
                            numA: i,
                            numB: j
                        };
                        arrQinmiNums.push(objQinMiNum);
                    }
                }
            }
            return arrQinmiNums;
        }

        var arrQinmiNums = getQinmiNums(0,2000);

        console.log("2000以内的亲密数共"+arrQinmiNums.length+"个，所有亲密数如下：");

        for(var i=0; i<arrQinmiNums.length; i++){
            console.log(arrQinmiNums[i]["numA"]+"--"+arrQinmiNums[i]["numB"]);
        }

    </script>
</head>
<body>
    
</body>
</html>